#ifndef __NOTE_COUNTER_COMMAND__
#define __NOTE_COUNTER_COMMAND__

#include <QObject>

#define CNTR_STATE_CMD					0x11
#define CNTR_COMM_TEST_CMD				0x14
#define CNTR_FAULT_CLEAR_CMD			0x16
#define CNTR_EXIT_WORK_MODE_CMD			0x20
#define CNTR_ENTER_WORK_MODE_CMD		0x21
#define CNTR_START_COUNT_CMD			0x22
#define CNTR_PAUSE_COUNT_CMD			0x23
#define CNTR_STORE_NOTE_CMD				0x24
#define CNTR_COMPLET_STORE_NOTE_CMD		0x25
#define CNTR_CLEAR_TRANSACTION_CMD		0x26
#define CNTR_OPEN_SHELL_CMD				0x31
#define CNTR_CLOSE_SHELL_CMD			0x32
#define CNTR_FETCH_EJECT_INFO_CMD		0x33
#define CNTR_ENTER_COIN_MODE_CMD		0x41
#define CNTR_EXIT_COIN_MODE_CMD			0x42

#define CNTR_COUNT_INFO_RESPONSE1		0x12
#define CNTR_COUNT_INFO_RESPONSE2		0x13
#define CNTR_FAULT_REPORT_CMD_RESPONSE	0x15
#define CNTR_ONLINE_CHECK_RESPONSE		0x17
#define CNTR_NOTESERIAL_REPORT_RESPONSE	0x18
#define CNTR_STORE_IN_PROGRESS_RESPONSE	0x24
#define CNTR_COMPLETE_STORE_RESPONSE	0x25
#define CNTR_EJECT_INFO_RESPONSE		0x33

#define CNTR_STATUS_OK					0x06
#define CNTR_STATUS_MODE_ERROR			0x15
#define CNTR_STATUS_NOTE_EXIST1_ERROR	0x16
#define CNTR_STATUS_NOTE_EXIST2_ERROR	0x17
#define CNTR_STATUS_NOTE_EXIST3_ERROR	0x18
#define CNTR_STATUS_DEBUG				0x15
#define CNTR_STATUS_FAULT				0x16
#define CNTR_STATUS_COIN				0x17

#define CNTR_MODE_SELECT				0x02

QByteArray cntr_pack_command(uint32_t cmd, uint32_t para = 0);
QByteArray cntr_parse_response(QByteArray resp);

#endif
